/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2023-03-23
 * Time: 22:47
 */


class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;
    TreeNode() {}
    TreeNode(int val) { this.val = val; }
    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

public class Solution {
//    递归
//    与 DFS 类似
//    删除这个树中满足条件的子树
//    就是删除这颗树左右子树中满足条件的子树
//    最后再判断这整棵树是不是满足条件
    public TreeNode pruneTree(TreeNode root) {
        if(root==null){
            return null;
        }
//        注意这里的删除
//        想要删除节点, 必须用他的父亲节点置为空, 才算删除
//        直接将本节点置空, 是没有用的, 因为这只是递归, 是节点引用的临时拷贝
        root.left=pruneTree(root.left);
        root.right=pruneTree(root.right);
//    最后再判断这整棵树是不是满足条件
        return root.left==null&&root.right==null
                &&root.val==0?null:root;
    }
}
